# def add():  # 高级
#     print("吹风机")
#
# def house():
#     print("三室一厅的房子")
#     print("电视")
#     print("电机")
#     # 低级：直接添加
#     # print("吹风机")
#     # add()
# house()
# 装饰器：在不修改原本的代码内容的情况下对这个函数添加额外的功能：增加代码的复用性


# 被装饰函数：原本的函数代码
# 装饰函数：新添加的函数代码

# 闭包：嵌套函数 在外部函数返回了内部函数
# 回调函数：函数名当做参数传进去调用 func()
# 函数引用：把函数引用给了另外一个变量

# 高级：装饰器
# 装饰函数
def add(func):
    def inner():
        func()  # 相当于执行了house()
        # 新添加的功能
        print("吹风机")
    return inner

# 被装饰函数
def house():
    print("三室一厅的房子")
    print("电视")
    print("电机")

inn = add(house)
inn()